package com.losalpes.persistence.entity;

import java.io.Serializable;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;

/**
 * @author Luis Fernando Martínez Moreno
 */
@NamedQueries(@NamedQuery(name = "autenticar", query = "SELECT u FROM Usuario u WHERE u.usuario = :usuario AND u.pwd = :pwd"))
@Entity
public class Usuario implements Serializable {

    @Id
    private String usuario;
    private String pwd;
    private TipoUsuario tipoUsuario;

    /**
     * Retorna la contraseña de usuario
     * @return pwd
     */
    public String getPwd() {
        return pwd;
    }

    /**
     * Modifica la contraseña de usuario
     * @param pwd
     */
    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    /**
     * Retorna el tipo de usuario
     * @return tipoUsuario
     */
    public TipoUsuario getTipoUsuario() {
        return tipoUsuario;
    }

    /**
     * Modifica el tipo de usuario
     * @param tipoUsuario
     */
    public void setTipoUsuario(TipoUsuario tipoUsuario) {
        this.tipoUsuario = tipoUsuario;
    }

    /**
     * Retorna el usuario
     * @return usuario
     */
    public String getUsuario() {
        return usuario;
    }

    /**
     * Modifica el usuario
     * @param usuario
     */
    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj instanceof Usuario) {
            Usuario ov = (Usuario) obj;
            return ov.getUsuario().equals(this.usuario);
        } else {
            return false;
        }
    }

    @Override
    public int hashCode() {
        int hash = 5;
        hash = 29 * hash + (this.usuario != null ? this.usuario.hashCode() : 0);
        hash = 29 * hash + (this.pwd != null ? this.pwd.hashCode() : 0);
        return hash;
    }
}
